package org.hxyjs.service.impl;

import org.hxyjs.dao.MongodbDao;
import org.hxyjs.dao.UserSchemeRecordDao;
import org.hxyjs.dto.DTO;
import org.hxyjs.dto.MessageEnum;

import org.hxyjs.entity.Account;
import org.hxyjs.entity.UserSchemeRecord;
import org.hxyjs.page.PageInfo;
import org.hxyjs.service.AccountService;
import org.hxyjs.service.UserSchemeRecordService;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;
import java.util.Optional;

@Service("userSchemeRecordService")
public class UserSchemeRecordServiceImpl implements UserSchemeRecordService, AccountService {
    @Resource
    UserSchemeRecordDao userSchemeRecordDao;
    @Resource
    MongodbDao mongodbDao;

    @Override
    public DTO<UserSchemeRecord> getAllUserSchemeRecords() throws Exception {
        List<UserSchemeRecord> userSchemeRecords = userSchemeRecordDao.getAllUserSchemeRecords();
        //isPresent表示判断不为空成立则dto为？与：之间的对象
        MessageEnum messageEnum = Optional.ofNullable(userSchemeRecords).isPresent() ? MessageEnum.GETUSERSCHEMERECORDSUCCESS: MessageEnum.GETUSERSCHEMERECORDFAIL;
        return new DTO<UserSchemeRecord>(messageEnum.getCode(), messageEnum.getMessage(), userSchemeRecords);
    }

    @Override
    public DTO<UserSchemeRecord> getUserSchemeRecordByUno(String usrno) throws Exception {
        UserSchemeRecord userSchemeRecord = userSchemeRecordDao.getUserSchemeRecordByUno(usrno);
        //isPresent表示判断不为空成立则dto为？与：之间的对象
        MessageEnum messageEnum = Optional.ofNullable(usrno).isPresent() ? MessageEnum.GETUSERSCHEMERECORDSUCCESS : MessageEnum.GETUSERSCHEMERECORDFAIL;
        return new DTO<UserSchemeRecord>(messageEnum.getCode(), messageEnum.getMessage(), userSchemeRecord);
    }

    @Override
    public DTO<UserSchemeRecord> deleteUserSchemeRecord(String usrno) throws Exception {
        Integer result = userSchemeRecordDao.deleteUserSchemeRecord(usrno);
        //isPresent表示判断不为空成立则dto为？与：之间的对象
        MessageEnum messageEnum = result > 0 ? MessageEnum.DELETEUSERSCHEMERECORDSUCCESS : MessageEnum.DELETEUSERSCHEMERECORDFAIL;
        return new DTO<UserSchemeRecord>(messageEnum.getCode(), messageEnum.getMessage());
    }

    @Override
    public DTO<UserSchemeRecord> updateUserSchemeRecord(UserSchemeRecord userSchemeRecord) throws Exception {
        Integer result = userSchemeRecordDao.updateUserSchemeRecord(userSchemeRecord);
        //isPresent表示判断不为空成立则dto为？与：之间的对象
        MessageEnum messageEnum = result > 0 ? MessageEnum.UPDATEUSERSCHEMERECORDSUCCESS : MessageEnum.UPDATEUSERSCHEMERECORDFAIL;
        return new DTO<UserSchemeRecord>(messageEnum.getCode(), messageEnum.getMessage());
    }

    @Override
    public DTO<UserSchemeRecord> addUserSchemeRecordByUno(UserSchemeRecord userSchemeRecord) throws Exception {
        Integer result = userSchemeRecordDao.addUserSchemeRecordByUno(userSchemeRecord);
        //isPresent表示判断不为空成立则dto为？与：之间的对象
        MessageEnum messageEnum = result > 0 ? MessageEnum.ADDUSERSCHEMERECORDSUCCESS : MessageEnum.ADDUSERSCHEMERECORDFAIL;
        return new DTO<UserSchemeRecord>(messageEnum.getCode(), messageEnum.getMessage(), userSchemeRecord);

    }

    @Override
    public DTO<UserSchemeRecord> getUserSchemeRecordsByPage(PageInfo pageInfo) throws Exception {
        List<UserSchemeRecord> userSchemeRecords = userSchemeRecordDao.getUserSchemeRecordsByPage(pageInfo);
        //isPresent表示判断不为空成立则dto为？与：之间的对象
        MessageEnum messageEnum = Optional.ofNullable(userSchemeRecords).isPresent() ? MessageEnum.GETUSERSCHEMERECORDSUCCESS : MessageEnum.GETUSERSCHEMERECORDFAIL;
        return new DTO<UserSchemeRecord>(messageEnum.getCode(), messageEnum.getMessage(), userSchemeRecords, pageInfo);
    }

    @Override
    public DTO<UserSchemeRecord> getUserSchemeRecordsWithOrders(String usrno) throws Exception {
        return null;
    }

    /**
     * 查询MongoDB
     *
     * @param usrno
     * @return
     * @throws Exception
     */

    @Override
    public DTO<UserSchemeRecord> activate(String usrno) throws Exception {
//        UserSchemeRecord userSchemeRecord = new UserSchemeRecord();
//        userSchemeRecord.setUno(usrno);
//        userSchemeRecord.setUstate("已激活");
//        Integer result = userSchemeRecordDao.updateUserSchemeRecord(userSchemeRecord);
//        //isPresent表示判断不为空成立则dto为？与：之间的对象
//        MessageEnum messageEnum = result > 0 ? MessageEnum.UPDATEADMINSUCCESS : MessageEnum.UPDATEADMINFAIL;
//        return new DTO<UserSchemeRecord>(messageEnum.getCode(), messageEnum.getMessage());
        return null;
    }

    @Override
    public DTO<UserSchemeRecord> lettory(String usrno,String giftName) throws Exception {
        UserSchemeRecord userSchemeRecord = userSchemeRecordDao.getUserSchemeRecordByUno(usrno);
        //isPresent表示判断不为空成立则dto为？与：之间的对象
        MessageEnum messageEnum = Optional.ofNullable(usrno).isPresent() ? MessageEnum.GETUSERSCHEMERECORDSUCCESS : MessageEnum.GETUSERSCHEMERECORDFAIL;
        return new DTO<UserSchemeRecord>(messageEnum.getCode(), messageEnum.getMessage(), userSchemeRecord,giftName);
    }


    @Override
    public DTO<Account> getAccountByAccountName(String accountName) throws Exception {
        DTO<Account> dto = new DTO<Account>();
//        Optional<Account> adminOP = Optional.ofNullable(userSchemeRecordDao.getAccountByAccountName(accountName));
//        dto.setT(adminOP.get());
//        MessageEnum messageEnum = adminOP.isPresent()?MessageEnum.GETADMINSUCCESS:MessageEnum.GETADMINFAIL;
//        dto.setCode(messageEnum.getCode());
//        dto.setMsg(messageEnum.getMessage());
        return dto;
    }
}
